home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / EGAVGA.SWG / 0067_Setting Video Mode.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-02  |  2KB  |  53 lines

  1. {
  2. MARC BIR
  3.  
  4. >My second problem is the video memory.  From my technical
  5. >reference manual, it tells me that the address starts at segment A000H,
  6. >offset 0000H.  I've been Programming the VGA 320x200x256 mode quite alot,
  7. >but in the EGA address, whenever I Write to video memory, all I see is
  8. >black and white, like monochrome.  if I will be happy if I get information
  9. >about that.  Another thing that actually question me is that when I'm
  10. >using the BIOS block palette to create a fade in/out, it makes the screen
  11. >flicker, which is quite disturbing.  What Info I need is how the VGA port
  12. JS>works on setting up the RGB palette.  Thanks.
  13.  
  14. How do you init. the mode?  Call int 10h With 13h?  if so then using
  15. A000:0000 is correct.  As far as fading, use the following.
  16. }
  17.  
  18. Type
  19.  PalType = Array [0..255, 0..2] of Byte;
  20.  
  21. Procedure SetPalette(Color, Count : Byte; Palette : PalType);
  22. Var
  23.   Ct, Col : Byte;
  24. begin
  25.   Port[$3C8] := Color;     { First color to set, Change this to $3C7 to
  26.                              read.  And switch the Port=Pal at bottom }
  27.   For Ct := 1 to Count Do  { Count is the total number of DACs to set }
  28.   For Col := 0 to 2 Do     { Sets the Red, Green and Blue }
  29.     Port[$3C9] :=  Palette[Ct, Col];
  30. end;
  31.  
  32. Procedure SetMode(Mode : Byte); Assembler;
  33. Asm
  34.   Mov AH, 0
  35.   Mov AL, Mode
  36.   Int 10h
  37. end;
  38.  
  39. {You can test your mode set With this }
  40. Procedure TestScreen;
  41. Var
  42.   X, Y : Integer;
  43. begin
  44.  For X := 0 to 319 Do
  45.    For Y := 0 to 199 Do
  46.      Mem[$A000 : Y * 320 + X] := (X * Y) Mod 256;
  47. end;
  48.  
  49. begin
  50.   SetMode($13);
  51.   TestScreen;
  52. end.
  53.